using ZR.Model;

namespace ZR.Model.System.Dto
{
    /// <summary>
    /// 风力数据PPI查询对象
    /// </summary>
    public class WindDataPPIQueryDto : PagerInfo
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        public int? Id { get; set; }

        /// <summary>
        /// 数据来源表名
        /// </summary>
        public string SourceTable { get; set; }

        /// <summary>
        /// X坐标
        /// </summary>
        public string XCoordinate { get; set; }

        /// <summary>
        /// Y坐标
        /// </summary>
        public string YCoordinate { get; set; }

        /// <summary>
        /// 风速
        /// </summary>
        public string WindSpeed { get; set; }

        /// <summary>
        /// 风向
        /// </summary>
        public string WindDirection { get; set; }

        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime? BeginTime { get; set; }

        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime? EndTime { get; set; }

        /// <summary>
        /// 时间参数（用于查询对应的表）
        /// </summary>
        public string TimeParam { get; set; }

        /// <summary>
        /// 最大风速（用于报警记录查询）
        /// </summary>
        public long? MaxWindSpeed { get; set; }

        /// <summary>
        /// 最小风速（用于报警记录查询）
        /// </summary>
        public long? MinWindSpeed { get; set; }

        /// <summary>
        /// 风速模糊查询（用于风速包含特定值的查询）
        /// </summary>
        public string WindSpeedLike { get; set; }

        /// <summary>
        /// X坐标最小值（用于坐标范围过滤）
        /// </summary>
        public decimal? XCoordinateMin { get; set; }

        /// <summary>
        /// X坐标最大值（用于坐标范围过滤）
        /// </summary>
        public decimal? XCoordinateMax { get; set; }

        /// <summary>
        /// Y坐标最小值（用于坐标范围过滤）
        /// </summary>
        public decimal? YCoordinateMin { get; set; }

        /// <summary>
        /// Y坐标最大值（用于坐标范围过滤）
        /// </summary>
        public decimal? YCoordinateMax { get; set; }

        /// <summary>
        /// 城市参数（用于筛选表名，例如：xuancheng）
        /// </summary>
        public string City { get; set; }
    }

    /// <summary>
    /// 风力数据PPI查询输入对象
    /// </summary>
    public class WindDataPPIDto
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 数据来源表名
        /// </summary>
        public string SourceTable { get; set; }

        /// <summary>
        /// X坐标
        /// </summary>
        public string XCoordinate { get; set; }

        /// <summary>
        /// Y坐标
        /// </summary>
        public string YCoordinate { get; set; }

        /// <summary>
        /// 风速
        /// </summary>
        public string WindSpeed { get; set; }

        /// <summary>
        /// 风向
        /// </summary>
        public string WindDirection { get; set; }
    }

    /// <summary>
    /// 风力数据PPI查询列表请求对象
    /// </summary>
    public class WindDataPPIListRequest
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        public int? Id { get; set; }

        /// <summary>
        /// 数据来源表名
        /// </summary>
        public string SourceTable { get; set; }

        /// <summary>
        /// X坐标
        /// </summary>
        public string XCoordinate { get; set; }

        /// <summary>
        /// Y坐标
        /// </summary>
        public string YCoordinate { get; set; }

        /// <summary>
        /// 风速
        /// </summary>
        public string WindSpeed { get; set; }

        /// <summary>
        /// 风向
        /// </summary>
        public string WindDirection { get; set; }

        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime? BeginTime { get; set; }

        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime? EndTime { get; set; }

        /// <summary>
        /// 时间参数（用于查询对应的表）
        /// </summary>
        public string TimeParam { get; set; }

        /// <summary>
        /// 最大风速（用于报警记录查询）
        /// </summary>
        public long? MaxWindSpeed { get; set; }

        /// <summary>
        /// 最小风速（用于报警记录查询）
        /// </summary>
        public long? MinWindSpeed { get; set; }

        /// <summary>
        /// 风速模糊查询（用于风速包含特定值的查询）
        /// </summary>
        public string WindSpeedLike { get; set; }

        /// <summary>
        /// X坐标最小值（用于坐标范围过滤）
        /// </summary>
        public decimal? XCoordinateMin { get; set; }

        /// <summary>
        /// X坐标最大值（用于坐标范围过滤）
        /// </summary>
        public decimal? XCoordinateMax { get; set; }

        /// <summary>
        /// Y坐标最小值（用于坐标范围过滤）
        /// </summary>
        public decimal? YCoordinateMin { get; set; }

        /// <summary>
        /// Y坐标最大值（用于坐标范围过滤）
        /// </summary>
        public decimal? YCoordinateMax { get; set; }

        /// <summary>
        /// 城市参数（用于筛选表名，例如：xuancheng）
        /// </summary>
        public string City { get; set; }

        /// <summary>
        /// 页码
        /// </summary>
        public int PageNum { get; set; } = 1;

        /// <summary>
        /// 每页数量
        /// </summary>
        public int PageSize { get; set; } = 10;
    }

    /// <summary>
    /// 风力数据PPI历史数据对象（包含统计信息）
    /// </summary>
    public class WindDataPPIHistoryDto
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 数据来源表名
        /// </summary>
        public string SourceTable { get; set; }

        /// <summary>
        /// X坐标
        /// </summary>
        public string XCoordinate { get; set; }

        /// <summary>
        /// Y坐标
        /// </summary>
        public string YCoordinate { get; set; }

        /// <summary>
        /// 风速
        /// </summary>
        public string WindSpeed { get; set; }

        /// <summary>
        /// 风向
        /// </summary>
        public string WindDirection { get; set; }

        /// <summary>
        /// 时间
        /// </summary>
        public string Time { get; set; }

        /// <summary>
        /// 最大风速
        /// </summary>
        public decimal? MaxWindSpeed { get; set; }

        /// <summary>
        /// 最小风速
        /// </summary>
        public decimal? MinWindSpeed { get; set; }

        /// <summary>
        /// 平均风速
        /// </summary>
        public decimal? AvgWindSpeed { get; set; }
    }
}